// 删除并获得点数
class Solution {
    public:
        int deleteAndEarn(vector<int>& nums) {
            sort(nums.begin(),nums.end());
            int n = nums.size();
            int size = nums[n-1] + 1;
            vector<int> newnums(size);
            for(auto e : nums)
            {
                newnums[e] += e;
            }
            vector<int> D(size);
            vector<int> DD(size);
            D[1] = newnums[1];
            for(int i = 1; i < size; i++)
            {
                D[i] = DD[i-1] + newnums[i];
                DD[i] = max(D[i-1],DD[i-1]);
            }
            return max(D[size-1],DD[size-1]);
        }
    };